/**
 * Copyright (C) 2012 The SkyTvOS Project
 * <p/>
 * Version     Date           Author
 * ─────────────────────────────────────
 * 2013-10-15       CRuby
 */

package com.skyworth.badsdk;

/**
 * <p>Description:</p>
 * <p>封装了下载的基本接口</p>
 *
 * @author CRuby
 * @version V1.0.0
 * @ClassName SkyDownloader
 * @date 2013-10-15
 */
public abstract class SkyDownloader {
    protected float sufficientTime = 2.0f;//下载空间需要文件大小的倍数

    /**
     * Description: 下载状态的回调Listener
     */
    protected SkyDownloadListener downListener = null;

    /**
     * TODO(阻塞式下载，设置下载回调的listener)
     *
     * @param listener 下载状态的回调Listener，可以传null
     */
    public SkyDownloader(SkyDownloadListener listener) {
        downListener = listener;
    }

    /**
     * 概述：设置下载路径，绝对路径和相对路径均可<br/>
     *
     * @param path void 需要保存的路径
     * @date 2013-10-21
     */
    public abstract void setDownloadPath(String path);

    /**
     * 概述：设置要下载的URL<br/>
     *
     * @param url 下载的url
     * @date 2013-10-21
     */
    public abstract void setDownloadUrl(String url);

    /**
     * 概述：设置要下载后的文件名称<br/>
     *
     * @param url 下载的url
     * @date 2013-10-21
     */
    public abstract void setDownloadFileName(String filename);

    /**
     * 概述：阻塞式下载设定的url，没有开线程<br/>
     *
     * @date 2013-10-21
     */
    public abstract void download();


    /**
     * 概述：暂停下载<br/>
     *
     * @date 2013-10-21
     */
    public abstract void pause();

    /**
     * 概述：继续下载<br/>
     *
     * @date 2013-10-21
     */
    public abstract void resume();

    /**
     * 概述：删除下载任务和文件、记录文件<br/>
     *
     * @date 2013-10-21
     */
    public abstract void deleteDownload();

    public float getSufficientTime() {
        return sufficientTime;
    }

    public void setSufficientTime(float sufficientTime) {
        this.sufficientTime = sufficientTime;
    }

}
